1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <cstdio> #include <algorithm> #define LL long long const int maxn = 205; const LL mo = 998244353; using namespace std; int x[maxn], y[maxn], n; LL ans = 0, pw[maxn]; int main(){ scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d%d", x + i, y + i); pw[0] = 1; for (int i = 1; i <= n; i++) pw[i] = pw[i - 1] * 2 % mo; ans = (pw[n] - 1 - n + mo) % mo; for (int i = 1; i <= n; i++) for (int j = i + 1; j <= n; j++){ int tmp = 0; for (int k = 1; k <= n; k++){ if (x[k] >= min(x[i], x[j]) && x[k] <= max(x[i], x[j]) && y[k] >= min(y[i], y[j]) && y[k] <= max(y[i], y[j])){ if ((y[k] - y[i]) * (x[j] - x[k]) == (x[k] - x[i]) * (y[j] - y[k])) ++tmp; } } ans = (ans - pw[tmp - 2] + mo) % mo; } printf("%lld\n", ans); return 0; }
|